#ifndef _COMMON_H_
#define _COMMON_H_
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <sys/epoll.h>
#include <semaphore.h>
#define NORM 0			  //正常态
#define ADD_DEFEAT -11	//增加用户失败
#define ADD_SUCCESS 11	//增加用户成功
#define DELETE_DEFEAT -21 //删除用户失败
#define DELETE_SUCCESS 21 //删除用户成功
#define CHANGE_DEFEAT -31 //修改用户失败
#define CHANGE_SUCCESS 31 //修改用户成功
#define FIND_DEFEAT -41   //查询用户失败
#define FIND_SUCCESS 41   //查询用户成功
#define SHOW_DEFEAT -61   //遍历用户失败
#define SHOW_SUCCESS 61   //遍历用户成功

#define LOGIN_SUCCESS 71 //注册成功
#define LOGIN_DEFEAT -71 //注册失败
#define MANAGE_WRONG -155//管理密码错误
//用来客户端和服务器通信的数据的结构体
typedef struct user_data_epoll
{
	char username[40]; //用户名
	char password[30]; //密码
	char phone[30];	//电话
	char work[30];	 //职位
	int level;		   // 等级
	int salary;		   // 工资
	int age;		   // 年龄
	int administrator; //管理员
	int change;		   //登录选项当change = 1 key = 1当change = 2 key = 2 当change其他key=0
	int key;		   //键值用于判断当administrator = 155 key = 4当administrator不等于155key=3
	int change_common;
	//1时key=11 2时key=12 3时key=13为4时key = 100
	int change_manage;
	//1时key=21 2时key=22 直到5时key=25为6时key = 100
} user_data;

//存储的客户端信息的结构体
typedef struct Clientuser
{
	char username[40]; //用户名
	char password[30]; //密码
	char phone[30];	//电话
	char work[30];	 //职位
	int level;		   // 等级
	int salary;		   // 工资
	int age;		   // 年龄
	struct Clientuser *next;
} user, *user_p;
//发送信息给客户端用来控制客户端发送什么过来
typedef struct Setto_client
{
	//用来控制客户端此刻应该打印什么
	int client_key;
	//用来控制服务端此时到哪个界面
	int data_key;
	//用来判断错误
	int wrong;
} Set_client;
//从服务端获取的信息
typedef struct Getfrom_service
{
	//用来控制客户端接下来需要打印的项目
	int client_key;
	//用来控制客户端发送给服务端的key
	int data_key;
	//用来判断错误
	int wrong;
} Get_service; //getservice
#endif

